Для настройки HTTPS в Apache NiFi нам неоходим сертификат и его закрытый ключ. Можно выпустить самоподписанный сертификат или выпустить его от CA. В данной статье я буду использовать сертификат от Let's Encrypt.

Подготовка

Для начала необходимо преобразовать пару сертификат-ключ в pkcs12


  #openssl pkcs12 -export -in /etc/letsencrypt/live/nifi1.vbalkhanakov.ru/fullchain.pem\  
     -inkey /etc/letsencrypt/live/nifi1.vbalkhanakov.ru/privkey.pem\  
     -out keystore.p12 -name nifi-cert -password pass:changeit  
     

Так как java-приложения работают с сертификатами через свой контейнер (keystore), экспортируем полученный pkcs12 в keystore.

  
  #keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass changeit -destkeystore keystore.jks -deststoretype JKS -deststorepass changeit -destkeypass changeit -alias nifi-cert
  #keytool -importcert -file /etc/letsencrypt/live/nifi1.vbalkhanakov.ru/fullchain.pem -keystore truststore.jks -storetype JKS -alias letsencrypt -storepass changeit -noprompt  
    

Создадим папку /opt/certs и перенесем в нее keystore.jks и truststore.jks

Настройка

После того, как выпустили сертификаты и создали keystore и truststore, можно переходить к настройке HTTPS.

Включаем безопасность

 
  nifi.remote.input.secure=true  
  
  #nifi.web.http.host=0.0.0.0  
  #nifi.web.http.port=8080  
  
  nifi.web.https.host=0.0.0.0  
  nifi.web.https.port=8443  
    

Заполняем настройки для сертификатов. Указываем путь к keystore и truststore, а также к сертифкату

    
  nifi.security.keystore=/opt/certs/keystore.jks  
  nifi.security.keystore.certificate=/etc/letsencrypt/live/nifi1.vbalkhanakov.ru/fullchain.pem  
  nifi.security.keystore.privateKey=/etc/letsencrypt/live/nifi1.vbalkhanakov.ru/privkey.pem  
  nifi.security.keystoreType=JKS  
  nifi.security.keystorePasswd=changeit  
  nifi.security.keyPasswd=changeit  
  nifi.security.truststore=/opt/certs/truststore.jks  
  nifi.security.truststore.certificate=/etc/letsencrypt/live/nifi1.vbalkhanakov.ru/fullchain.pem  
  nifi.security.truststoreType=JKS  
  nifi.security.truststorePasswd=changeit  
    

Выполнеям перезапуск командой ./bin/nifi.sh restart, https настроен. Но по-умолчанию, NiFi настроен в single-user режиме.

Выполним создание пользователя

    
  #./bin/nifi.sh set-single-user-credentials <nifi-login> <nifi-password>  
  

И перезапустим ./bin/nifi.sh restart, чтоб изменения применились.

nifi-login-interface